import cv2
import numpy as np
from matplotlib import pyplot as plt
import random,time

from PIL import ImageGrab
import pyautogui
import cv2
import numpy as np
import time
from 子函数 import yinru

from 子函数.yinru import cs,zd ,yqfy,jr ,zb ,js ,sb ,yh ,ts ,bqds ,zd1 ,cjdw ,cj ,kszd ,qd ,jjtp ,jg ,yq ,di2zhang,di3zhang ,di4zhang ,di5zhang
from 子函数.yinru import di20zhang ,di21zhang ,di22zhang ,di23zhang ,ts1 ,daotubiao ,daotubiao1 ,zhanliping ,huodejiangli ,zaizhanchang ,haifangzhu ,sx ,tz ,xiaomao
from 子函数.yinru import jiejietupo ,liuxunzhang,jieshu,danjujieshu,qr1,时间下限,时间上限,feiliuxing

# jiejietupo
# w, h = template.shape[::-1]


# im0 =ImageGrab.grab((0, 0, 2880, 1800))
# im0.show()
# im0 =ImageGrab.grab((0, 1500, 2880, 1800))
# im0.show()
#
# pyautogui.scroll(200) #鼠标滚轮   可以用负号
def xunhuan(x,y):
    pyautogui.moveTo(x, y)  # 鼠标移动到坐标位置
    pyautogui.click()  # 鼠标点击
    time.sleep(random.randint(时间下限, 时间上限))

time3 = time.time()
i=0
while 1:
    time1 = time.time()
    # time.sleep(2)
    img_rgb = np.array(ImageGrab.grab().convert('RGB'))#屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)

    #探索
    res = cv2.matchTemplate(img_gray, ts, cv2.TM_CCOEFF_NORMED)# 大图 ，目标 ，模式
    threshold = 0.85  #阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框

        pyautogui.moveTo(int(pt[0] ), int(pt[1] )) #鼠标移动到坐标位置
        pyautogui.click() #鼠标点击
        print("探索")
        break


    # 结界突破
    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    res = cv2.matchTemplate(img_gray, jjtp, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
    threshold = 0.85 # 阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
        pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
        pyautogui.click()  # 鼠标点击
        print("点击御魂")
        time.sleep(random.randint(时间下限, 时间上限))
        break





    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    # 准备
    res = cv2.matchTemplate(img_gray, zb, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
    threshold = 0.8  # 阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        time.sleep(random.randint(时间下限, 5))
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框

        pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
        pyautogui.click()  # 鼠标点击
        print("准备")
        danjujieshu = 0
        break








        # 确定
    res = cv2.matchTemplate(img_gray, qd, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
    threshold = 0.8  # 阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
        pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
        pyautogui.click()  # 鼠标点击
        print("确定")
        break


    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    #结束
    res = cv2.matchTemplate(img_gray, js, cv2.TM_CCOEFF_NORMED)# 大图 ，目标 ，模式
    threshold = 0.8  #阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        # time.sleep(random.randint(1, 2))
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框

        pyautogui.moveTo(int(pt[0] ), int(pt[1] )) #鼠标移动到坐标位置
        pyautogui.click() #鼠标点击
        danjujieshu=0
        print("结束")
        time.sleep(random.randint(时间下限, 时间上限))
        break

    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    #失败
    res = cv2.matchTemplate(img_gray, sb, cv2.TM_CCOEFF_NORMED)# 大图 ，目标 ，模式
    threshold = 0.95  #阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        # time.sleep(random.randint(1, 3))
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
        pyautogui.moveTo(int(pt[0] ), int(pt[1] )) #鼠标移动到坐标位置
        pyautogui.click() #鼠标点击
        print("失败")
        time.sleep(random.randint(时间下限, 时间上限))
        break


    # #进入结界突破
    # res = cv2.matchTemplate(img_gray, jiejietupo, cv2.TM_CCOEFF_NORMED)# 大图 ，目标 ，模式
    # threshold = 0.85  #阈值 图片相识度
    # loc = np.where(res >= threshold)
    # for pt in zip(*loc[::-1]):
    #     canshu = [(432, 227), (946, 227), (1428, 227), (432, 445), (946, 445), (1428, 445), (432, 635), (946, 635),
    #               (1428, 635)]
    #     random.shuffle(canshu)  # 随机打乱数组排序
    #     xunhuan(canshu[0][0], canshu[0][1])
    #     print("进入结界突破")
    #     break
    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    #################################################################################################################################################################
    #勋章多
    res = cv2.matchTemplate(img_gray, liuxunzhang, cv2.TM_CCOEFF_NORMED)# 大图 ，目标 ，模式
    # res = cv2.matchTemplate(img_gray, feiliuxing, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
    threshold = 0.95  #阈值 图片相识度
    loc1 = np.where(res >= threshold)
    for pt in zip(*loc1[::-1]):
        print("六勋章",len(loc1[0]))
        # time.sleep(random.randint(时间下限, 时间上限))
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
        pyautogui.moveTo(int(pt[0])+20, int(pt[1])+20)  # 鼠标移动到坐标位置
        pyautogui.click() #鼠标点击

        time.sleep(random.randint(时间下限, 时间上限))
        # 进攻
        img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
        img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
        res = cv2.matchTemplate(img_gray, jg, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
        threshold = 0.85  # 阈值 图片相识度
        loc = np.where(res >= threshold)
        for pt in zip(*loc[::-1]):
            # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
            pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
            pyautogui.click()  # 鼠标点击
            print("进攻")
            time.sleep(random.randint(时间下限, 时间上限))
            break
        break
    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    # 刷新  没有六星勋章了
    if len(loc1[0]) == 0:
        # print("刷新  没有六星勋章了",len(loc1[0]) )
        res = cv2.matchTemplate(img_gray, sx, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
        threshold = 0.8  # 阈值 图片相识度
        loc = np.where(res >= threshold)
        for pt in zip(*loc[::-1]):
            # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
            pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
            pyautogui.click()  # 鼠标点击
            print("刷新")
            time.sleep(random.randint(时间下限, 时间上限))
            break

    img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    # 单局定时间结束

    res = cv2.matchTemplate(img_gray, jieshu, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
    threshold = 0.8  # 阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
        danjujieshu+=1
        print("单局定时间结束",danjujieshu)
        if danjujieshu>30:
            pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
            pyautogui.click()  # 鼠标点击
            print("刷新")
            time.sleep(random.randint(时间下限, 时间上限))
            img_rgb = np.array(ImageGrab.grab().convert('RGB'))  # 屏幕截图
            img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
            # 结束确认
            res = cv2.matchTemplate(img_gray, qr1, cv2.TM_CCOEFF_NORMED)  # 大图 ，目标 ，模式
            threshold = 0.9  # 阈值 图片相识度
            loc = np.where(res >= threshold)
            for pt in zip(*loc[::-1]):
                # time.sleep(random.randint(1, 3))
                # cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), )#在图片选中位置画线框
                pyautogui.moveTo(int(pt[0]), int(pt[1]))  # 鼠标移动到坐标位置
                pyautogui.click()  # 鼠标点击
                print("确认")
                time.sleep(random.randint(时间下限, 时间上限))
                break

        break

#1848，330  个人 1848，508
    #结界突破状态
    res = cv2.matchTemplate(img_gray, jiejietupo, cv2.TM_CCOEFF_NORMED)# 大图 ，目标 ，模式
    threshold = 0.9  #阈值 图片相识度
    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        ############################################################################################################################################################
        # canshu = [(1848, 330), (1848, 508)] #个人还是 阴阳寮
        canshu = [ (1848, 508)]  #阴阳寮
        random.shuffle(canshu)  # 随机打乱数组排序
        xunhuan(canshu[0][0], canshu[0][1])

        if canshu[0][1]==508:
            canshu = [(443, 344), (443, 552), (443, 831)]  # 随机选一个
            random.shuffle(canshu)  # 随机打乱数组排序
            xunhuan(canshu[0][0], canshu[0][1])
        print("随机选个人还是团队")

        break

    time2 = time.time()
    print(time2 - time1)

    if (time2 - time3)>6000:
        print("到约定的时间了，我延迟一下")
        time.sleep(random.randint(600000, 600000))
        time3 = time.time()
